package br.com.vendaext.gerencial.entidades;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import java.util.Collection;
import java.util.Iterator;

@Entity
public class Modulo implements Entidade {

	/**
	 * @uml.property  name="id"
	 */
	@Id
	@SequenceGenerator(name="sq_modulo", sequenceName="sq_modulo", initialValue=1)
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sq_modulo")
	private Long id;
	/**
	 * @uml.property  name="nome"
	 */
	@Column
	private String nome;

	/**
	 * @uml.property  name="descricao"
	 */
	@Column
	private String descricao;

	/**
	 * @uml.property  name="pai"
	 * @uml.associationEnd  inverse="modulo2:br.com.vendaweb.integracao.entidade.Modulo"
	 */
	@ManyToOne
	private Modulo pai;
	@Column
	private String url;

	public Modulo() {
	}

	public Modulo(String nome, String descricao) {
		this.nome = nome;
		this.descricao = descricao;
	}
	public Modulo(String nome, String descricao, String url) {
		this.nome = nome;
		this.descricao = descricao;
		this.url= url;
	}

	
	/**
	 * Getter of the property <tt>descricao</tt>
	 * @return   Returns the descricao.
	 * @uml.property  name="descricao"
	 */
	public String getDescricao() {
		return descricao;
	}

	/**
	 * Getter of the property <tt>id</tt>
	 * @return   Returns the id.
	 * @uml.property  name="id"
	 */
	public Long getId() {
		return id;
	}

	/**
	 * Getter of the property <tt>nome</tt>
	 * @return   Returns the nome.
	 * @uml.property  name="nome"
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * Getter of the property <tt>pai</tt>
	 * @return  Returns the pai.
	 * @uml.property  name="pai"
	 */
	public Modulo getPai() {
		return pai;
	}

	/**
	 * Setter of the property <tt>descricao</tt>
	 * @param descricao   The descricao to set.
	 * @uml.property  name="descricao"
	 */
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	/**
	 * Setter of the property <tt>id</tt>
	 * @param id   The id to set.
	 * @uml.property  name="id"
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * Setter of the property <tt>nome</tt>
	 * @param nome   The nome to set.
	 * @uml.property  name="nome"
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * Setter of the property <tt>pai</tt>
	 * @param pai  The pai to set.
	 * @uml.property  name="pai"
	 */
	public void setPai(Modulo pai) {
		this.pai = pai;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

}
